package com.baizhi.aop;

import org.springframework.util.StringUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class ObjectMapperUtil {
    //该对象就是工具api有且只有一份即可,用于将对象和字符串转换.并且不允许别人修改.
    private static final ObjectMapper mapper=new ObjectMapper();

    //1.将对象转化为JSON
    public static String toJson(Object target) {
        if(target==null) {
            throw new NullPointerException("taget数据为null");
        }
        try {
            //使用writeValuesAsString的方法就可以把对角转化成json字符串。
            return mapper.writeValueAsString(target);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

    }

    //2. 将json串转化为对象   用户传递什么样的类型,就返回什么样的对象!!!
    public static <T> T toObject(String json,Class<T> targetClass) {
        if(StringUtils.isEmpty(json) || targetClass==null) {
            throw new NullPointerException("参数不能为null");
        }
        try {
            return mapper.readValue(json, targetClass);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

    }
}
